<?php

/*
  $Id: alertpay.php, v 1.3, 11/07/2010
  
  Released under the GNU General Public License
 
  Alertpay module Created By Gray Appleton
  This update by Peter Humphrey
  Updated by Wendy Royal
   
  This free contribution made by request.
  If you have found this script useful a small
  donation by Alertpay to applehobbys@aol.com 
  would be greatly appreciated.  
*/
//include_once ('PaymentGateway.php');
class alertpay {

var $code, $title, $description, $enabled;

// class constructor 
    function alertpay() { 
      global $order; 
      $this->code = 'alertpay'; 
      $this->title = MODULE_PAYMENT_ALERTPAY_TEXT_TITLE; 
      $this->description = MODULE_PAYMENT_ALERTPAY_TEXT_DESCRIPTION; 
      $this->sort_order = MODULE_PAYMENT_ALERTPAY_SORT_ORDER; 
      $this->enabled = ((MODULE_PAYMENT_ALERTPAY_STATUS == 'True') ? true : false); 
			
      if ((int)MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID > 0) { 
        $this->order_status = MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID; 
      } 
      $this->form_action_url = 'https://www.alertpay.com/PayProcess.aspx'; 

      if (is_object($order)) $this->update_status(); 
    }  
    
 function update_status() {
      global $db;
      global $order;

      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_ALERTPAY_ZONE > 0) ) {
        $check_flag = false;
        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_ALERTPAY_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
        while (!$check->EOF) {
          if ($check->fields['zone_id'] < 1) {
            $check_flag = true;
            break;
          } elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
            $check_flag = true;
            break;
          }
          $check->MoveNext();
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
    }

// class methods
    function javascript_validation() {
      return false;
    }

    function selection() {
      return array('id' => $this->code,
                   'module' => $this->title);
    }

    function pre_confirmation_check() {
      return false;
    }

    function confirmation() {
      return false;
    }

    function process_button() {
      global $db, $order, $currencies;
      
      //alertpay accepted currency
      $alert_cur = array('CAD', 'EUR', 'GBP', 'USD', 'AUD' , 'SEK' , 'CHF' , 'HKD' , 'NZD' , 'NOK' , 'ZAR' , 'INR' , 'SGD');
      $CUR = $order->info['currency'];
      if (!in_array($CUR,$alert_cur)) {
        $CUR = 'CAD';
      }
    
       $process_button_string = zen_draw_hidden_field('ap_merchant', MODULE_PAYMENT_ALERTPAY_ACCOUNT) .
				zen_draw_hidden_field('ap_amount', number_format(($order->info['total'] - $order->info['']) * $currencies->get_value($CUR), $currencies->get_decimal_places($CUR))) .
                                zen_draw_hidden_field('ap_currency', $CUR) .
                                zen_draw_hidden_field('ap_purchasetype', 'item-goods') .
                                zen_draw_hidden_field('ap_itemname', MODULE_PAYMENT_ALERTPAY_PRODUCT_TYPE) .

		// prefills the customers details in alertpay payment page					   		   
				zen_draw_hidden_field('ap_fname', $order->customer['firstname']) .	 
		                zen_draw_hidden_field('ap_lname', $order->customer['lastname']) .	   
				zen_draw_hidden_field('ap_contactemail', $order->customer['email_address']) .	   
				zen_draw_hidden_field('ap_zippostalcode', $order->billing['postcode']) .	
				zen_draw_hidden_field('ap_city', $order->billing['city']) .
				zen_draw_hidden_field('ap_country', $order->billing['country']) .
				zen_draw_hidden_field('ap_stateprovince', $order->billing['state']) .
				zen_draw_hidden_field('ap_addressline1', $order->billing['street_address']) .
				zen_draw_hidden_field('ap_addressline2', $order->billing['suburb']) .
				zen_draw_hidden_field('ap_contactphone', $order->customer['telephone']) .					
		// end prefill data		
						
                 // return and cancel url         
                                zen_draw_hidden_field('ap_returnurl', zen_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .
                                zen_draw_hidden_field('ap_cancelurl', zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

      return $process_button_string;
    }

    function before_process() {
      return false;
    }

    function after_process() {
      return false;
    }

    function output_error() {
      return false;
    }

    function check() {
      global $db;
      if (!isset($this->_check)) {
        $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_ALERTPAY_STATUS'");
        $this->_check = $check_query->RecordCount();
      }
      return $this->_check;
    }

    function install() {
      global $db;
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Alertpay Module', 'MODULE_PAYMENT_ALERTPAY_STATUS', 'True', 'Do you want to accept Alertpay payments?', '6', '3', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now());");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_ALERTPAY_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('General product description.', 'MODULE_PAYMENT_ALERTPAY_PRODUCT_TYPE', 'Purchase(s) made on ".STORE_NAME."', 'Needed to complete Alertpay process.', '6', '5', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Alertpay Account Number', 'MODULE_PAYMENT_ALERTPAY_ACCOUNT', '".STORE_OWNER_EMAIL_ADDRESS."', 'Your Alertpay account number to which the payment is to be made.', '6', '4', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_ALERTPAY_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
    }

    function remove() {
      global $db;
      $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
      return array('MODULE_PAYMENT_ALERTPAY_STATUS', 'MODULE_PAYMENT_ALERTPAY_SORT_ORDER', 'MODULE_PAYMENT_ALERTPAY_PRODUCT_TYPE', 'MODULE_PAYMENT_ALERTPAY_ACCOUNT', 'MODULE_PAYMENT_ALERTPAY_ZONE', 'MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID');
    }
  }
?>